package org.nepu.scr.indexrate.ratecompliance;

import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nepu.scr.DTO.ReturnDataDTO;
import org.nepu.scr.indexrate.ratecompliance.compliance.params.ComplianceData;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Slf4j
@Service
@AllArgsConstructor
public class complianceBuildService {


    @SneakyThrows
    public List<ReturnDataDTO> buildData(ComplianceData data){

        List<ReturnDataDTO> rData = new ArrayList<>();

        //构建A------A1
        ReturnDataDTO A111 = new ReturnDataDTO("提升旋转系统功能试验",data.getA111(),null);
        ReturnDataDTO A112 = new ReturnDataDTO("循环系统试验",data.getA112(),null);
        ReturnDataDTO A113 = new ReturnDataDTO("井控系统功能试验",data.getA113(),null);
        ReturnDataDTO A114 = new ReturnDataDTO("动力及电气系统功能试验",data.getA114(),null);
        ReturnDataDTO A115 = new ReturnDataDTO("仪表通讯系统功能试验",data.getA115(),null);
        ReturnDataDTO A116 = new ReturnDataDTO("安全系统功能试验",data.getA116(),null);

        List<ReturnDataDTO> A11List = new ArrayList<>();

        A11List.add(A111);
        A11List.add(A112);
        A11List.add(A113);
        A11List.add(A114);
        A11List.add(A115);
        A11List.add(A116);

        ReturnDataDTO A11 = new ReturnDataDTO("功能试验",data.getA11(),A11List);
        ReturnDataDTO A12 = new ReturnDataDTO("压力测试",data.getA12(),null);

        List<ReturnDataDTO> A1List = new ArrayList<>();
        A1List.add(A11);
        A1List.add(A12);

        ReturnDataDTO A1 = new ReturnDataDTO("操作可靠性",data.getA1(),A1List);

        //构建A------A2
        ReturnDataDTO A21 = new ReturnDataDTO("无损探伤",data.getA21(),null);
        ReturnDataDTO A22 = new ReturnDataDTO("应力测试",data.getA22(),null);
        ReturnDataDTO A23 = new ReturnDataDTO("联合调试",data.getA23(),null);

        List<ReturnDataDTO> A2List = new ArrayList<>();
        A2List.add(A21);
        A2List.add(A22);
        A2List.add(A23);

        ReturnDataDTO A2 = new ReturnDataDTO("实际与设计差异",data.getA2(),A2List);

        //构建A------A3
        ReturnDataDTO A31 = new ReturnDataDTO("钻修机年检报告",data.getA31(),null);
        ReturnDataDTO A32 = new ReturnDataDTO("作业前检查报告",data.getA32(),null);

        List<ReturnDataDTO> A3List = new ArrayList<>();
        A3List.add(A31);
        A3List.add(A32);

        ReturnDataDTO A3 = new ReturnDataDTO("本质安全",data.getA3(),A3List);

        //构建A------A4
        ReturnDataDTO A411 = new ReturnDataDTO("井架",data.getA411(),null);
        ReturnDataDTO A412 = new ReturnDataDTO("游车大钩",data.getA412(),null);
        ReturnDataDTO A413 = new ReturnDataDTO("钻井绞车",data.getA413(),null);

        List<ReturnDataDTO> A41List = new ArrayList<>();

        A41List.add(A411);
        A41List.add(A412);
        A41List.add(A413);

        ReturnDataDTO A41 = new ReturnDataDTO("钻修机年检报告",data.getA41(),A41List);

        ReturnDataDTO A421 = new ReturnDataDTO("转盘",data.getA421(),null);
        ReturnDataDTO A422 = new ReturnDataDTO("顶驱",data.getA422(),null);

        List<ReturnDataDTO> A42List = new ArrayList<>();

        A42List.add(A421);
        A42List.add(A422);

        ReturnDataDTO A42 = new ReturnDataDTO("旋转系统直观检查",data.getA42(),A42List);

        ReturnDataDTO A43 = new ReturnDataDTO("循环系统直观检查",data.getA43(),null);

        ReturnDataDTO A441 = new ReturnDataDTO("BOP吊",data.getA441(),null);
        ReturnDataDTO A442 = new ReturnDataDTO("防喷器远程控制系统",data.getA442(),null);
        ReturnDataDTO A443 = new ReturnDataDTO("井控设备",data.getA443(),null);

        List<ReturnDataDTO> A44List = new ArrayList<>();

        A44List.add(A441);
        A44List.add(A442);
        A44List.add(A443);

        ReturnDataDTO A44 = new ReturnDataDTO("井控系统直观检查",data.getA44(),A44List);

        ReturnDataDTO A451 = new ReturnDataDTO("动力及辅助设备",data.getA451(),null);
        ReturnDataDTO A452 = new ReturnDataDTO("应急发电机组、应急供电等电气系统",data.getA452(),null);

        List<ReturnDataDTO> A45List = new ArrayList<>();

        A45List.add(A451);
        A45List.add(A452);

        ReturnDataDTO A45 = new ReturnDataDTO("动力电气系统直观检查",data.getA45(),A45List);

        List<ReturnDataDTO> A4List = new ArrayList<>();
        A4List.add(A41);
        A4List.add(A42);
        A4List.add(A43);
        A4List.add(A44);
        A4List.add(A45);

        ReturnDataDTO A4 = new ReturnDataDTO("关键性能指标",data.getA4(),A4List);

        //构建A------A5
        ReturnDataDTO A51 = new ReturnDataDTO("钻井设备证书",data.getA51(),null);
        ReturnDataDTO A52 = new ReturnDataDTO("钻井液净化设备及压力管线证书",data.getA52(),null);
        ReturnDataDTO A53 = new ReturnDataDTO("井控设备证书",data.getA53(),null);
        ReturnDataDTO A54 = new ReturnDataDTO("动力及辅助设备证书",data.getA54(),null);
        ReturnDataDTO A55 = new ReturnDataDTO("消防救生设备证书",data.getA55(),null);
        ReturnDataDTO A56 = new ReturnDataDTO("钻井装置基本资料",data.getA56(),null);

        List<ReturnDataDTO> A5List = new ArrayList<>();
        A5List.add(A51);
        A5List.add(A52);
        A5List.add(A53);
        A5List.add(A54);
        A5List.add(A55);
        A5List.add(A56);

        ReturnDataDTO A5 = new ReturnDataDTO("设备设施资料",data.getA5(),A5List);

        //构建A
        List<ReturnDataDTO> AList = new ArrayList<>();

        ReturnDataDTO A = new ReturnDataDTO("符合性评级",data.getA(),AList);

        AList.add(A1);
        AList.add(A2);
        AList.add(A3);
        AList.add(A4);
        AList.add(A5);
        A.setChildren(AList);

        rData.add(A);

        return rData;
    }
}
